package main.examination.NetEase;

import java.util.Arrays;

/**
 * 给你一个字符串 s ，请你返回满足以下条件的最长子字符串的长度：每个 'a'，'b'，'c'，'x'，'y'，'z' ，在子字符串中都恰好出现了偶数次。
 *
 * <p>力扣原题
 * https://leetcode-cn.com/problems/find-the-longest-substring-containing-vowels-in-even-counts/
 */
public class ex2 {
    public int solution(String s) {
        int res = 0;
        int status = 0;
        int[] pos = new int[1 << 6];
        Arrays.fill(pos, -1);
        pos[0] = 0;
        char[] chars = s.toCharArray();
        int n = s.length();
        for (int i = 0; i < n; i++) {
            switch (chars[i]) {
                case 'a':
                    status ^= 1;
                    break;
                case 'b':
                    status ^= 1 << 1;
                    break;
                case 'c':
                    status ^= 1 << 2;
                    break;
                case 'x':
                    status ^= 1 << 3;
                    break;
                case 'y':
                    status ^= 1 << 4;
                    break;
                case 'z':
                    status ^= 1 << 5;
                    break;
                default:
                    break;
            }
            if (pos[status] >= 0) {
                res = Math.max(res, i - pos[status] + 1);
            } else {
                pos[status] = i + 1;
            }
        }
        return res;
    }
}
